/* ***** BEGIN LICENSE BLOCK *****
 * Version: NPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Netscape Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is lutsko.com code.
 *
 * The Initial Developer of the Original Code is  James Lutsko 
 * (jim@lutsko.com http://www.lutsko.com).
 * Portions created by the Initial Developer are Copyright (C) 2003
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the NPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the NPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

package autoschedule;

import autoteam.ui.AutoTeamTableModel;

import javax.swing.table.AbstractTableModel;
import java.util.Date;
import java.util.Calendar;
import java.text.DateFormat;



public class FacilityAvailabilityModel extends AutoTeamTableModel
{
    static final String[] DOW = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

    AutoScheduleDoc doc = null;
    Facility f;

    static final String[] columnNames = {"Date", "Day", "Start", "Duration"};

    FacilityAvailabilityModel(AutoScheduleDoc _doc){doc = _doc;f = null;}
    
    public int getColumnCount() {return columnNames.length;}
        
    public int getRowCount() {return (f == null ? 0 : f.availability.size());}

    public String getColumnName(int col) {return columnNames[col];}

    public Class getColumnClass(int col) {
	if(col == 0) return Date.class;
	if(col == 1) return String.class;
	if(col == 2) return Integer.class;
	if(col == 3) return Integer.class;
	return null;
    }

    public boolean isCellEditable(int row, int col) {return (col != 1);}


    public void add()
    {
	if(f.availability.size() > 0)
	    {
//		Day day1 = (Day) f.availability.get(f.availability.size()-1);
//		Calendar c = Calendar.getInstance();
//		c.setTime(day1.getDate());
//
//		c.roll(c.DATE,true);
//		Date d = c.getTime();
//		Day day = new Day(d, day1.start,day1.end);
//		f.availability.add(day);
	    }
    }

    public void add(int j)
    {
	if(j>=0)
	    {
//		Day day1 = f.getDay(j);
//		Calendar c = Calendar.getInstance();
//		c.setTime(day1.getDate());
//		c.roll(c.DATE,7);
//		Date d = c.getTime();
//		Day day = new Day(d, day1.start,day1.end);
//		f.availability.add(day);
	    }
    }

    public void delete(int j)
    {
	f.removeDay(j);
    }

    public Object getValueAt(int row, int col) {
	Day day = (Day) f.availability.get(row);
	
	if(col == 0) return day.getDate();
	if(col == 1) 
	    {
//		Calendar c = Calendar.getInstance();
//		c.setTime(day.getDate());
//		return DOW[c.get(c.DAY_OF_WEEK)-1];
	    }
	if(col == 2) return day.getStart();
	if(col == 3) return day.getEnd();
	return null;
    }


    public void setValueAt(Object value, int row, int col) {
	Day day = null;

	if(row < f.availability.size())
	    day = (Day) f.availability.get(row);
	else {
	    day = new Day();
	    f.availability.add(day);
	}
	
	if(col == 0) day.setDate((Date) value);
	else if(col == 2) day.setStart((Integer) value);
	else if(col == 3) day.setEnd((Integer) value);
    }
}
